module scene.graph.node;

import tango.util.container.LinkedList;

// TODO bounding box, rendering state, animation, transforms integration

class BoundingVolume {
	
}

/**
 * Basic scene graph node.
 * Authors: jetbird
 */
class Node {
	private: 
		Node parentNode;
		LinkedList!(Node) childNodes;
		BoundingVolume boundingVol;
	
	public:
		this() {
			childNodes = new LinkedList!(Node);
		}
		
		/**
		 * Get parent node for this one.
		 * Returns: parent node.
		 */
		Node parent() {
			return parentNode;
		}
		
		void add(Node n) {
			childNodes.add(n);
		}
		
		void remove(Node n) {
			childNodes.remove(n);
		}
		
		BoundingVolume boundingVolume(BoundingVolume value) {
			return this.boundingVol = value;
		}
		
		BoundingVolume boundingVolume() {
			return this.boundingVol;
		}
}